/**
 * 文件系统模块类型定义
 * 定义与文件系统交互所需的类型和接口
 */

/**
 * 文件或文件夹句柄接口
 */
export interface FileHandle {
    id: string;            // 唯一标识
    name: string;          // 文件/文件夹名称
    path?: string;         // 文件系统路径(可选，Tauri环境使用)
    isDirectory: boolean;  // 是否为目录
    _handle?: any;         // 内部使用的原始handle，存储环境特定的句柄对象
}

/**
 * 小说文件结构接口
 * 描述小说在文件系统中的结构组织
 */
export interface NovelStructure {
    rootFolder: FileHandle;
    volumes: Array<{
        folder: FileHandle;
        chapters: Array<{
            file: FileHandle;
            content?: string;  // 可选，懒加载
        }>
    }>
}

/**
 * 文件系统同步状态
 */
export type SyncStatus = 'idle' | 'syncing' | 'error';

/**
 * 运行环境类型
 */
export type FileSystemEnvironment = 'web' | 'tauri' | 'electron' | 'fallback';

/**
 * 文件系统操作配置选项
 */
export interface FileSystemOptions {
    encoding?: string;       // 文件编码
    recursive?: boolean;     // 是否递归操作
    overwrite?: boolean;     // 是否覆盖现有文件
}

/**
 * 文件系统变更事件类型
 */
export type FileSystemChangeEvent = 'create' | 'modify' | 'delete' | 'rename';

/**
 * 文件系统变更回调函数类型
 */
export type FileSystemChangeCallback = (event: FileSystemChangeEvent, handle: FileHandle) => void; 